Semiconductor-based memory modules (e.g., DIMMS) often comport with some set of predetermined (e.g., standards-based) protocols for save and restore of volatile memory-resident data to and from, respectively, a non-volatile storage location so as to aid in protecting against catastrophic failures. Often some such predetermined protocols (e.g., as are sometime used on NVDIMM platforms) require a specific sequence of events to be carried out between a host component and NVDIMM components so as to initiate and complete a set of volatile memory save and/or restore operations.
In memory systems that comprise both volatile memory (e.g., random access memory (RAM)) and non-volatile memory components (e.g., solid state drive devices (SSD), FLASH memory devices, etc.), memory contents can be saved, and/or restored by moving memory contents between the two different types of memory components. Such volatile memory save and/or restore operations are often performed or facilitated by functions of an NVDIMM controller. Save and/or restore operations can be initiated either through use of software controlled registers and/or in response to hardware events.
Unfortunately, in legacy scenarios, a host is needed throughout the entirety of the performance of the save and/or restore operations. Legacy protocols rely on exchanges between the host and the memory subsystem. In legacy implementations, a large number of such exchanges need to be carried out, for example, to initiate an operation (e.g., a save operation) and then to bring the host components and memory subsystem components into a state suitable for performing a save and/or restore operation. In some such legacy implementations, the amount of time that is needed for the exchanges can become longer than the time available to process the save before actual occurrence of a catastrophic (e.g., complete power loss) event. For example, the time needed to bring the host components and memory subsystem components into a state suitable for performing a save/restore operation can easily be longer than the time between earliest detection of an impending catastrophic event (e.g., power brownout) and the actual occurrence of such a catastrophic event (e.g., total power outage). For this reason legacy implementations sometime fail to perform the intended save from volatile memory to non-volatile memory so as to protect against a catastrophic event.
None of the aforementioned legacy approaches achieve the capabilities of the herein-disclosed techniques for hybrid memory systems for autonomous non-volatile memory save and restore operations. Therefore, there is a need for improvements.